package com.tanhua.dubbo.api;

import com.tanhua.dubbo.pojo.Comment;
import com.tanhua.dubbo.pojo.Video;
import com.tanhua.dubbo.vo.PageInfo;

import java.util.Map;

public interface VideoApi {

    /**
     * 保存小视频
     *
     * @param video
     * @return 保存成功后，返回视频id
     */
    String saveVideo(Video video);

    /**
     * 分页查询小视频列表，按照时间倒序排序，优先查询推荐结果
     *
     * @param userId
     * @param page
     * @param pageSize
     * @return
     */
    PageInfo<Video> queryVideoList(Long userId, Integer page, Integer pageSize);

    /**
     * 根据id查询小视频
     *
     * @param videoId
     * @return
     */
    Video queryVideoById(String videoId);

    /**
     * 点赞
     *
     * @param userId
     * @param publishId
     * @return
     */
    Boolean likeComment(Long userId, String publishId);

    /**
     * 取消点赞
     *
     * @param userId
     * @param publishId
     * @return
     */
    Boolean disLikeComment(Long userId, String publishId);

    /**
     * 查询点赞数
     *
     * @param videoId
     * @return
     */
    Long queryLikeCount(String videoId);

    /**
     * 查询用户是否点赞该动态
     *
     * @param userId
     * @param videoId
     * @return
     */
    Boolean queryUserIsLike(Long userId, String videoId);

    /**
     * 查询评论列表
     * @param videoId
     * @param page
     * @param pageSize
     * @return
     */
    PageInfo<Comment> queryCommentList(String videoId, Integer page, Integer pageSize);

    /**
     * 查询评论条数
     * @param id
     * @return
     */
    Integer queryCommentCount(String id);

    /**
     * 评论发布
     * @param publishId
     * @param comment
     * @return
     */
    Boolean publishComment(String publishId, Map<String ,String> comment, Long userId);

    /**
     * 默认小视频列表
     * @param userId
     * @param page
     * @param pageSize
     * @return
     */
    PageInfo<Video> defaultVideoList(Long userId, Integer page, Integer pageSize);

    /**
     * 是否关注
     * @param userId 当前用户
     * @param uid 目标用户
     * @return
     */
    Boolean isFocus(Long userId, String uid);

    /**
     * 视频 关注
     * @param userId
     * @param uid
     * @return
     */
    Object userFocus(Long userId, String uid);
}
